package demo1;

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-08-04
 * Time: 10:59
 */
public class SelectSort {

    /**
     * 直接选择排序
     * 时间复杂度 : O(N^2) 每一次都需要向后寻找最小, 一共 N 个元素要寻找
     * 空间复杂度 : O(1), 未额外开辟新空间
     * 不稳定排序
     *
     * @param array 排序数组
     */
    public static void selectSort (int[] array) {
        for(int i = 0; i < array.length - 1; i++) {
            // 以当前第一个元素的下标为选取的基准元素进行判断
            int minIndex = i;
            // 从 i + 1 位置向后寻找, 寻找到比这个基准小并且是 j + 1 后所有元素中最小的
            for(int j = i + 1; j < array.length; j++) {
                if(array[minIndex] > array[j]) {
                    minIndex = j;
                }
            }

            // 最小元素就是自己, 则不用进行排序
            if(minIndex != i) {
                // 将最小的换到前面
                int tmp = array[i];
                array[i] = array[minIndex];
                array[minIndex] = tmp;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {9, 2, 5, 1, 7};
        SelectSort.selectSort(array);
        System.out.println(Arrays.toString(array));
    }
}
